package com.yuw.hwhigher04;

import java.util.Scanner;

import com.yuw.hwbase04.Student;

public class Company {
	// 属性
	// 员工数组[数组类型是父类类型，多态——父类引用指向子类的实例对象]
	private ColaEmployee[] arrEmps;
	// 行为

	/**
	 * 员工信息初始化
	 */
	public void init() {
		Scanner sc = new Scanner(System.in);
		// 默认值为-1
		int count = -1;
		do {
			System.out.println("请输入需要录入信息的员工人数：");
			// 接收成员人数
			count = sc.nextInt();
		} while (count <= 0);

		// 初始化员工数组
		arrEmps = new ColaEmployee[count];

		// for循环一次录入每个员工的信息
		for (int i = 0; i < arrEmps.length; i++) {
			// 临时变量，员工对象
			ColaEmployee emp = null;
			System.out.println("请选择员工的类型：[1:固定工资员工；2:时薪员工；其他：销售员工]");
			int typeFlag = sc.nextInt();
			// 初始化父类信息
			System.out.println("请输入员工姓名：");
			String strName = sc.next();
			System.out.println("请输入员工的生日月份：");
			int myMonth = sc.nextInt();
			if (typeFlag == 1) {
				// 固定工资员工
				System.out.println("请输入员工的月固定工资：");
				double monthS = sc.nextDouble();
				// 创建固定工资的员工对象
				// 多态 --- 父类指代子类
				emp = new SalariedEmployee(strName, myMonth, monthS);
			} else if (typeFlag == 2) {
				// 时薪员工
				System.out.println("请输入员工的小时固定工资：");
				double hourSalary = sc.nextDouble();
				System.out.println("请输入员工的当前月的工作小时数：");
				double hours = sc.nextDouble();

				// 创建固定工资的员工对象
				// 多态 --- 父类指代子类
				emp = new HourlyEmployee(strName, myMonth, hourSalary, hours);
			} else {
				// 销售员工
				System.out.println("请输入员工的月销售额：");
				double monthCount = sc.nextDouble();
				System.out.println("请输入员工的提成率：");
				double saleRate = sc.nextDouble();

				// 创建销售工资的员工对象
				// 多态 --- 父类指代子类
				emp = new SalesEmployee(strName, myMonth, monthCount, saleRate);
			}
			// 存入学生数组中
			arrEmps[i] = emp;
		}
	}

	/**
	 * 打印员工工资
	 * 
	 * @param month
	 *            打印月份
	 */
	public void print(int month) {
		if (arrEmps != null && arrEmps.length > 0) {
			System.out.println("员工" + month + "月份的工资信息：");
			// 打印员工的工资信息
			for (ColaEmployee emp : arrEmps) {
				// emp 虽然是父类类型，但是是执行子类的实例对象
				// 打印每个员工自己的信息
				emp.printMe(month);
			}
		}
	}
}
